HTTP 状态码

状态码为客户端提供了一种理解事物处理结果的便捷方式。

总的来说,可以将HTTP状态码分为五类:

1开头的信息性状态码;
2开头的成功状态码;
3开头的重定向状态码;
4开头的客户端错误状态码;
5开头的服务器错误状态码;

100 ~ 199 —— 信息性状态码

100 Continue

说明收到了初始部分,请客户端继续。

100 Continue 状态码是一种优化,客户端应用程序只有在避免向服务器发送一个服务器无法处理或使用的大实体时,才应该使用100 Continue

101 Switching Protocols

说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议

200 ~ 299 —— 成功状态码

客户端发起请求时,这些请求通常都是成功的。服务器有一组用来表示成功的状态码,分别对应于不同类型的请求。

200 OK

请求没问题实体的主体部分包含了所请求的资源。

201 Created

用于创建服务器对象的请求(比如PUT)。响应的实体主体部分中应该包含各种引用了已创建的资源的URL。

202 Accepted

请求已被接受,但服务器还未对其执行任何动作。

203 Not-Authoritative

实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本,如果中间节点上有一份资源副本,但无法或者没有对它所发送的与资源有关的元信息进行验证,就会出现这种情况。

204 Not Content

响应报文中包含若干首部和一个状态行,但没有实体的主体部分。

205 Reset Content

另一个主要用负责告诉浏览器清除当前页面中的所有HTML表单元素。

206 Partial Content

成功执行了一个部分或Range(范围)请求。

300 ~ 399 —— 重定向状态码

重定向状态码要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代响应而不是资源的内容。

其中有些状态码之间存在一些交叉,这些差别大部分源于 HTTP/1.0 和 HTTP/1.1 应用程序对这些状态码处理方式不同。

300 Multiple Choices

客户端请求一个实际指向多个资源的URL时会返回这个状态码。

301 Moved Permanently

在请求的URL已被移除时使用。

302 Found

301状态码类似;但是,客户端应该使用location首部给出的URL来临时定位资源,将来的请求仍应使用老的URL。

303 See Other

告知客户端应该用另一个URL来获取资源。

304 Not Modified

客户端可以通过所包含的请求首部,使其请求变成有条件的。

305 Use Proxy

用来说明必须通过一个代理来访问资源;代理的位置由location首部给出。

307 Temporary Redirect

301状态码类似,但是,客户端应该使用location首部给出的URL来临时定位资源,将来的请求仍应使用老的URL。

400 ~ 499 —— 客户端错误状态码

有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求报文,或者最常见的是,请求一个不存在的URL

400 Bad Request

用于告知客户端它发送了一个错误的请求。

401 Unauthorized

与适当的首部一同返回,在这些首部中请求客户端在获取对资源的访问权之前,对自己进行认证。

402 Payment Required

现在这个状态码还未使用,但已经被保留,以用作未来之用。

403 Forbidden

用于说明请求被服务器拒绝了。

404 Not Found

用于说明服务器无法找到所请求的URL。

405 Method Not Allowed

发起的请求中带有所请求的URL不支持的方法时,使用此状态码。

406 Not Acceptable

客户端可以指定参数来说明它们愿意接收什么类型的实体。

407 Proxy Authentication

401状态码类似,但用于要求对资源进行认证的代理服务器。

408 Request Timeout

如果客户端完成请求所花的时间太长,服务器可以回送此状态码,并关闭连接。

409 Conflict

用于说明请求可能在资源上引发一些冲突。

410 Gone

404类似,只是服务器曾经拥有过此资源。

411 Length Required

服务器要求在请求报文中包含Content-Length首部时使用。

412 Precondition Failed

客户端发起了条件请求,且其中一个条件失败了的时候使用。

413 Request Entity Too Large

客户端发送的实体主体部分比服务器能够活着希望处理的要长时,使用此状态码。

414 Request URI Too Long

客户端所发请求中的请求URL比服务器能够或者希望处理的要长是,使用此代码。

415 Unsupported Media Type

服务器无法理解或无法支持客户端所发实体的内容类型时,使用此状态码。

416 Request Range Not Satisfiable

请求报文所请求的是指定资源的某个范围,而此范围无效或者无法满足时,使用此状态码。

417 Expectation Failed

请求的Expect请求首部包含了一个期望,但服务器无法满足此期望时,使用此状态码。

500 ~ 599 —— 服务器错误状态码

又有时客户端发送了一条有效请求,服务器自身却出错了。这可能是客户端碰上了服务器的缺陷,或者服务器上的子元素,比如某个网关资源,出了错。

500 Internal Server Error

服务器遇到一个妨碍它为请求提供服务的错误时,使用此代码。

501 Not Implemented

客户端发起的请求超出服务器的能力范围时,使用此代码。

502 Bad Gateway

作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应。

503 Service Unavailable

用来说明服务器现在无法为请求提供服务,但将来可以。

504 Gateway Timeout

与状态码408类似,只是这里的响应来自一个网关或者代理,它们在等待另一台服务器对其请求进行响应时超时了。

505 HTTP Version Not Supported

服务器收到的请求使用了它无法或不愿支持的协议版本时,使用此状态码。